home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2005 November / WNnov2005.iso / Windows / Equipement / hMailServer / hMailServer-4.1-Build-136.exe / {app} / PHPWebAdmin / include / formcheck.js < prev    next >
Text File  |  2005-02-12  |  5KB  |  183 lines

  1. /*
  2. ******************************************************************
  3. *  Form Check, JavaScript Form Validation Library
  4. ******************************************************************
  5. *
  6. *  FormCheck currently supports the following contols:
  7. *    - Null values
  8. *    - Minimum and maximum lengths
  9. *    - Minimum and maximum values (for numbers)
  10. *    - Type controls
  11. *
  12. *  FormCheck currently supports the following input types:
  13. *    - date (mm/dd/yyyyy)
  14. *    - datemysql (yyyy-mm-dd)
  15. *    - email
  16. *    - ipaddress
  17. *    - number
  18. *    - text
  19. *
  20. */
  21. function securityCheck(input) {
  22.     /*
  23.       SecurityCheck Function
  24.     */
  25.     var badchars    = Array('\'','\"','%','\\');
  26.     for(var i=0; i<badchars.length;i++) {
  27.         if(input.indexOf(badchars[i]) != -1)
  28.           return false;
  29.     }
  30. }
  31.  
  32. function inputCheck(input,type) {
  33.     /*
  34.       InputCheck Function
  35.     */
  36.     var errors = 0;
  37.     var expression;
  38.  
  39.     switch(type) {
  40.         case 'email':
  41.             expression    = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
  42.         break;
  43.         case 'text':
  44.             expression    = "";
  45.         break;
  46.         case 'number':
  47.             expression    = "";
  48.         break;
  49.         case 'date':
  50.             expression    = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
  51.         break;
  52.         case 'datedb':
  53.             expression    = /^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$/;
  54.         break;
  55.         case 'datemysql':
  56.             expression    = /^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$/;
  57.         break;
  58.         case 'ipaddress':
  59.             expression    = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;
  60.         break;
  61.         case '':
  62.         break;
  63.     }
  64.  
  65.     if((errors == 0) && (expression != '')) {
  66.         if(!expression.exec(input))
  67.           errors++;
  68.     }
  69.  
  70.     if(errors==0)
  71.         return true;
  72.     else
  73.         return false;
  74. }
  75.  
  76. function formCheck(cform) {
  77.     /*
  78.       FormCheck Function
  79.     */
  80.     if(!cform) {
  81.         alert("Empty form object detected!");
  82.         return false;
  83.     }
  84.  
  85.     var errors        = 0;
  86.     var message        = "Please check the following input(s): \n";
  87.     var controlmessages    = Array();
  88.  
  89.     if(cform.formmessage)
  90.     {
  91.         message = cform.formmessage + "\n";
  92.     }
  93.     for(i=0;i<cform.elements.length;i++) {
  94.         // Get manual message for this input
  95.         if(cform.elements[i].checkmessage)
  96.           controlmessages[i] = cform.elements[i].checkmessage;
  97.         else
  98.           controlmessages[i] = "";
  99.         // Get message
  100.  
  101.         // 1. NULL CONTROL
  102.         if(cform.elements[i].checkallownull && cform.elements[i].checkallownull=='false') {
  103.             if(cform.elements[i].value) {
  104.                 if((cform.elements[i].value == '') || (cform.elements[i].value == ' ')) {
  105.                     errors++;
  106.                     if(controlmessages[i] != "")
  107.                         message +="* "+controlmessages[i]+"\n";
  108.                     else
  109.                        message +="* Field "+cform.elements[i].name+" cannot be blank.\n";
  110.                 }
  111.             } else {
  112.                 errors++;
  113.                 if(controlmessages[i] != "")
  114.                   message +="* "+controlmessages[i]+"\n";
  115.                 else
  116.                   message +="* Field "+cform.elements[i].name+" cannot be undefined.\n";
  117.             }
  118.         }
  119.         // END OF NULL CONTROL
  120.  
  121.         // 2. TYPE CONTROL
  122.         if((cform.elements[i].checktype) && (cform.elements[i].value)) {
  123.             if(!inputCheck(cform.elements[i].value,cform.elements[i].checktype)) {
  124.                 errors++;
  125.                 if(controlmessages[i] != "")
  126.                   message +="* "+controlmessages[i]+"\n";
  127.                 else
  128.                   message +="* Invalid "+cform.elements[i].checktype+" format in "+cform.elements[i].name+".\n";
  129.             }
  130.         }
  131.         // END OF TYPE CONTROL
  132.  
  133.         // 3. LENGTH CONTROL
  134.         if((cform.elements[i].checkminlen) && (cform.elements[i].value)) {
  135.             if(cform.elements[i].value.length < cform.elements[i].checkminlen) {
  136.                 errors++;
  137.                 if(controlmessages[i] != "")
  138.                   message +="* "+controlmessages[i]+"\n";
  139.                 else
  140.                   message +="* Length of "+cform.elements[i].name+" cannot be less than "+cform.elements[i].checkminlen+" characters.\n";
  141.             }
  142.         }
  143.         if((cform.elements[i].checkmaxlen) && (cform.elements[i].value)) {
  144.             if(cform.elements[i].value.length > cform.elements[i].checkmaxlen) {
  145.                 errors++;
  146.                 if(controlmessages[i] != "")
  147.                   message +="* "+controlmessages[i]+"\n";
  148.                 else
  149.                   message +="* Length of "+cform.elements[i].name+" cannot be more than "+cform.elements[i].checkmaxlen+" characters.\n";
  150.             }
  151.         }
  152.         // END OF LENGTH CONTROL
  153.  
  154.         // 3. MIN/MAX VALUE CONTROL FOR NUMBERS
  155.         if((cform.elements[i].checkminvalue) && (cform.elements[i].value)) {
  156.             if(cform.elements[i].value < cform.elements[i].checkminvalue) {
  157.                 errors++;
  158.                 if(controlmessages[i] != "")
  159.                   message +="* "+controlmessages[i]+"\n";
  160.                 else
  161.                   message +="* Value of "+cform.elements[i].name+" cannot be less than "+cform.elements[i].checkminvalue+".\n";
  162.             }
  163.         }
  164.         if((cform.elements[i].checkmaxvalue) && (cform.elements[i].value)) {
  165.             if(cform.elements[i].value > cform.elements[i].checkmaxvalue) {
  166.                 errors++;
  167.                 if(controlmessages[i] != "")
  168.                   message +="* "+controlmessages[i]+"\n";
  169.                 else
  170.                   message +="* Value of "+cform.elements[i].name+" cannot be less than "+cform.elements[i].checkmaxvalue+".\n";
  171.             }
  172.         }
  173.         // END OF MIN/MAX VALUE CONTROL
  174.     } // END OF THE FOR LOOP
  175.  
  176.     if(errors == 0) {
  177.       return true;
  178.     } else {
  179.       alert(message);
  180.       return false;
  181.     }
  182. }
  183.